//
//  NSString+ADUtil.h
//  ADKit
//
//  Created by duzexu on 2017/12/1.
//  Copyright © 2017年 duzexu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface NSString (ADUtil)

- (CGSize)ad_sizeForFont:(UIFont *)font;

/**
 *  去除字符串前后空格以及后面的换行
 */
- (NSString*)ad_trim;
/// 消除首尾空格
- (NSString *)ad_removeBothEndsWhitespace;
// 消除收尾空格
- (NSString *)ad_trimWhitespace;
// 消除所有空格
- (NSString *)ad_trimAllWhitespace;

- (BOOL)ad_isValidateWithRegex:(NSString *)regex;

- (BOOL)ad_isVaild;
- (BOOL)ad_isVaildPhone;
- (BOOL)ad_isVaildEmail;
- (BOOL)ad_isAllNumbers;
- (BOOL)ad_isAllCharacter;
- (BOOL)ad_haveEmoji;
- (BOOL)ad_haveChinese;
- (BOOL)ad_isAllChinese;
- (BOOL)ad_haveSpecialCharacter;
- (BOOL)ad_isVaildIdentityCard;
- (BOOL)ad_isValidCarNo;/** 车牌号验证 */
- (BOOL)ad_isValidUrl;/** 网址验证 */
- (BOOL)ad_isValidPostalcode;/** 邮政编码 */
- (BOOL)ad_isValidIP;
- (BOOL)ad_isValidTaxNo;/** 工商税号 */

/// safe string
- (NSString *)ad_safeString;
/// host
- (NSString *)ad_hostString;
/// 转换货币
- (NSString *)ad_toMoneyString;
///转拼音
- (NSString *)ad_toPinYin;

/**
 @brief     是否符合最小长度、最长长度，是否包含中文,首字母是否可以为数字
 @param     minLenth 账号最小长度
 @param     maxLenth 账号最长长度
 @param     containChinese 是否包含中文
 @param     firstCannotBeDigtal 首字母不能为数字
 @return    正则验证成功返回YES, 否则返回NO
 */
- (BOOL)ad_isValidWithMinLenth:(NSInteger)minLenth
                      maxLenth:(NSInteger)maxLenth
                containChinese:(BOOL)containChinese
           firstCannotBeDigtal:(BOOL)firstCannotBeDigtal;

/**
 @brief     是否符合最小长度、最长长度，是否包含中文,数字，字母，其他字符，首字母是否可以为数字
 @param     minLenth 账号最小长度
 @param     maxLenth 账号最长长度
 @param     containChinese 是否包含中文
 @param     containDigtal   包含数字
 @param     containLetter   包含字母
 @param     containOtherCharacter   其他字符
 @param     firstCannotBeDigtal 首字母不能为数字
 @return    正则验证成功返回YES, 否则返回NO
 */
- (BOOL)ad_isValidWithMinLenth:(NSInteger)minLenth
                      maxLenth:(NSInteger)maxLenth
                containChinese:(BOOL)containChinese
                 containDigtal:(BOOL)containDigtal
                 containLetter:(BOOL)containLetter
         containOtherCharacter:(NSString *)containOtherCharacter
           firstCannotBeDigtal:(BOOL)firstCannotBeDigtal;

@end

@interface NSAttributedString (ADUtil)

- (CGSize)ad_size;

/**
 *  动态计算文字的宽高（多行）
 *  @param limitSize 限制的范围
 *
 *  @return 计算的宽高
 */
- (CGSize)ad_sizeWithLimitSize:(CGSize)limitSize;

/**
 *  动态计算文字的宽高（多行）
 *  @param limitWidth 限制宽度 ，高度不限制
 *
 *  @return 计算的宽高
 */
- (CGSize)ad_sizeWithLimitWidth:(CGFloat)limitWidth;

@end

@interface NSString (ADEncrypt)

- (NSString *)ad_DesEncryptWithKey:(NSString *)key;

- (NSData *)ad_DesDecryptWithKey:(NSString *)key;

@end

@interface NSString (ADLocalized)

- (NSString *)ad_localized;

@end
